As applications migrate toward managed runtime environments (MRTEs) such as Java® Virtual Machine (JVM) and Common Language Runtime (CLR) provided by Microsoft® .NET, unmanaged application components may need to be integrated into or coexist with new MRTE-based systems. In particular, managed code is code executing under the control of an MRTE (e.g., any code written in C# or Visual Basic .NET) whereas unmanaged code is code executing outside of the MRTE (e.g., COM components and WIN32 application program interface (API) functions). However, low-level platform components and legacy application components may not be compatible with the new MRTE-based systems. That is, some legacy application components are kept outside of MRTEs (i.e., unmanaged code) because current MTREs cannot comprehend certain platform specific features of the legacy application components. Another reason for keeping some legacy application components outside of MRTEs is the high cost involved in converting the legacy application components to managed code.
Native method invocation (NMI) such as platform invoke is a service that enables managed code to call unmanaged functions implemented in dynamic link libraries (DLLs) such as Microsoft® WIN32 API. Typically, an NMI component is used during common language infrastructure (CLI) runtimes to improve performance of a processor system (i.e., a platform). In particular, the NMI component interacts with many different data structures of a virtual machine to process managed code and unmanaged code. Currently, however, there is no standard for implementation of the NMI component so that information associated with the NMI component may be customized for optimization from one virtual machine to another.